#include <stdio.h>
// scanf会跳过匹配内容前面的空格等，但是后面的不会处理，getchar仍然可以捕获

long get_long(void)
{
    long input;
    char ch;
    while (scanf("%ld", &input) != 1)
    {
        while ((ch = getchar()) != '\n')
            putchar(ch); // dispose of bad input
        printf(" is not an integer.\nPlease enter an ");
        printf("integer value, such as 25, -178, or 3: ");
    }
    return input;
}

int main(int argc, char const *argv[])
{
        // 输入的一个重点是如何处理缓冲区的分隔符或者结束符
    int guess = 1;
    printf("你心里的数字是%d?\n", guess);
    // getchar会把空格、制表符和换行符都读入
    while (getchar() != 'y')
    {
        printf("你心里的数字是:%d?\n", ++guess);
    }
    printf("答对了\n");
    // scanf会跳过空格、制表符和换行符
    char apple[40];
    printf("测试scanf请输入:");
    scanf("%s", apple);
    printf("你输入了%s\n", apple);

    int count;
    int a, b, c;
    printf("请输入匹配%%d %%d的东西:");
    // scanf的""是放匹配输入的,可以用空格，匹配多个输入
    count = scanf("%d %d", &a, &b);
    printf("scanf返回的结果是成功匹配输入的个数:%d\n", count);
    // 处理无效输入
    printf("处理无效输入——请输入一个整数:");
    b = get_long();
    printf("输入了:%d\n", b);


}
